package com.un.ebs.sys.service;

import cn.binarywang.wx.miniapp.api.WxMaService;
import com.github.binarywang.wxpay.service.WxPayService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpUser;

import java.util.Map;

/**
 * @author liubo
 * @email liubocs@163.com
 * @date 2020/3/5 22:49
 */
public interface WxService {

    /**
     * 发送模板消息
     *
     * @param tenantId   租户ID
     * @param title
     * @param userId
     * @param templateId 模板ID
     * @param data       消息数据
     * @param url        URL
     */
    void sendTemplateMessage(String tenantId, String title, String userId, String templateId, Map<String, String> data, String url);

    void sendTemplateMessage(String tenantId, String userId, String templateId, String first, String keyword1, String keyword2, String keyword3, String keyword4, String remark, String url);

    void sendMessage(String tenantId, String userId, String templateId, String first, String userData, String reasonData, String addressData, String remark);

    /**
     * 获取指定租户的微信支付接口
     *
     * @param tenantId
     * @return
     */
    WxPayService getWxPayService(String tenantId);

    /**
     * 获取当前的租户的微信公众号服务类
     *
     * @param tenantId
     * @param entId
     * @return
     */
    WxMpService getWxMpService(String tenantId, String entId);

    /**
     * 获取当前的租户的微信公众号服务类
     *
     * @param tenantId
     * @return
     */
    WxMpService getWxMpService(String tenantId);

    /**
     * 获取当前的租户的微信公众号服务类
     *
     * @return
     */
    WxMpService getWxMpService();

    WxCpService getWxCpService();

    WxCpService getWxCpService(String tenantId);

    WxCpService getWxCpService(String tenantId, String entId);

    WxMaService getWxMaService();

    WxMaService getWxMaService(String tenantId);

    WxMaService getWxMaService(String tenantId, String entId);

    /**
     * 获取OpenID
     *
     * @param entId
     * @param tenantId
     * @param code
     * @return
     */
    String getOpenId(String entId, String tenantId, String code);


    WxMpUser getUserInfo(String entId, String tenantId, String code);


}
